#include<iostream>
#include<string>
#include<unistd.h>
#include<pthread.h>
#include<cstdio>
#include<cstring>
#include<vector>
const int num = 10;//创建线程的个数

void *routine(void* args)//线程执行的起始函数
{
    std::string name = static_cast<const char*>(args);
    delete(char*) args;//数据已经被子线程拿到了释放也无所谓
    int cnt = 5;
    while(cnt)
    {
        std::cout << "new线程名字" << name << std::endl;
        sleep(1);
    }
    return nullptr;
}

int main()
{
    std::vector<pthread_t> tids;//管理多线程的容器
    for(int i = 0; i < num; i++)
    {
        pthread_t tid;
        //char id[64];//有bug,在因为多次申请的都是同一块空间会导致,信息覆盖,主子线程没有同步机制
        char* id = new char[64];//存储子线程的名字
        
        snprintf(id,64,"thread-%d",i);
        
        int n = pthread_create(&tid,nullptr,routine,id);//创建一个子线程
        //sleep(5);//使用睡眠模拟同步
        if(n == 0)
        {
            tids.push_back(tid);
        }
        else
        {
            continue;
        }
    }

    for(int i = 0; i < num; i++)
    {
        int n = pthread_join(tids[i],nullptr);//等待一个子线程
        if(n == 0)
        {
            std::cout << "进程等待成功" << std::endl;
            sleep(1);
        }
    }
    return 0;
}
//该程序是模拟多线程来执行任务